<?php

/**
 * This is the model class for table "_product".
 *
 * The followings are the available columns in table '_product':
 *
 * @property int    $id
 * @property string $name
 * @property string $description
 * @property string $alias
 * @property int    $in_stock
 * @property int    $on_sale
 * @property string $on_sale_start
 * @property string $on_sale_end
 * @property string $creation_datetime
 * @property string $last_update
 * @property int    $status
 */
class ProductBase extends CActiveRecord
{
    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return SITE_ID . '_product';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array(
                'creation_datetime',
                'default',
                'value'      => new CDbExpression('NOW()'),
                'setOnEmpty' => false,
                'on'         => 'insert'
            ),
            array(
                'last_update',
                'default',
                'value'      => new CDbExpression('NOW()'),
                'setOnEmpty' => false,
                'on'         => 'update'
            ),
            // @todo Please remove those attributes that should not be searched.
            array(
                'name, alias, in_stock, status, on_sale, on_sale_start, on_sale_end, creation_datetime, last_update',
                'safe',
                'on' => 'search'
            ),
        );
    }

    /**
     * @return array relational rules.
     */
    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array();
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels()
    {
        return array(
            'id'                => 'ID',
            'name'              => 'Name',
            'description'       => 'Description',
            'alias'             => 'Alias',
            'in_stock'          => 'In Stock',
            'on_sale'           => 'On Sale',
            'on_sale_start'     => 'On Sale Start',
            'on_sale_end'       => 'On Sale End',
            'creation_datetime' => 'Creation Datetime',
            'last_update'       => 'Last Update',
            'status'            => 'Status',
        );
    }

    /**
     * Retrieves a list of models based on the current search/filter conditions.
     *
     * Typical usecase:
     * - Initialize the model fields with values from filter form.
     * - Execute this method to get CActiveDataProvider instance which will filter
     * models according to data in model fields.
     * - Pass data provider to CGridView, CListView or any similar widget.
     *
     * @return CActiveDataProvider the data provider that can return the models
     * based on the search/filter conditions.
     */
    public function search()
    {
        // @todo Please modify the following code to remove attributes that should not be searched.

        $criteria = new CDbCriteria;

        $criteria->compare('id', $this->id, true);
        $criteria->compare('name', $this->name, true);
        $criteria->compare('description', $this->description, true);
        $criteria->compare('alias', $this->alias);
        $criteria->compare('in_stock', $this->in_stock, true);
        $criteria->compare('on_sale', $this->on_sale, true);
        $criteria->compare('on_sale_start', $this->on_sale_start, true);
        $criteria->compare('on_sale_end', $this->on_sale_end, true);
        $criteria->compare('creation_datetime', $this->creation_datetime, true);
        $criteria->compare('last_update', $this->last_update, true);
        $criteria->compare('status', $this->status, true);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

    /**
     * Returns the static model of the specified AR class.
     * Please note that you should have this exact method in all your CActiveRecord descendants!
     *
     * @param string $className active record class name.
     *
     * @return DndBoxanhfoodAdministator the static model class
     */
    public static function model($className = 'Product')
    {
        return parent::model($className);
    }
}
